/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.itschapala.dsw2.estacionamiento.vista;

import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.itschapala.dsw2.estacionamiento.bl.CobroBlLocal;
import mx.itschapala.dsw2.estacionamiento.bl.RegistroBlLocal;
import mx.itschapala.dsw2.estacionamiento.modelo.Cobro;
import mx.itschapala.dsw2.estacionamiento.modelo.Registro;

/**
 *
 * @author Lindemann
 */
@ManagedBean
@SessionScoped
public class CobroBean implements Serilizable{
    
    
    //---------------EJB'S-------------------------
    @EJB
    private CobroBlLocal cobroBl;
    @EJB
    private RegistroBlLocal registroBl;
    //------------------variables(propiedades)--------------
    private List<Cobro> lista;
    private List<Registro> listaRegistro;
    private Cobro cost;
    private String accion;
    private int idRegistro;
    ////
    private  long precio;
    private long p;
    private  long horaS;
//-----------constructor--------------------------------
    public CobroBean() {
        cost=new Cobro();
        
    }
//-----------metodos GET y SET-------------------------------- 
    public List<Cobro> getLista() {
        lista=cobroBl.getAll();
        return lista;
    }

    public Cobro getCost() {
        return cost;
    }

    public void setCost(Cobro cost) {
        this.cost = cost;
    }

    public List<Registro> getListaRegistro() {
        listaRegistro=registroBl.getAll();
        return listaRegistro;
    }

    public void setListaRegistro(List<Registro> listaRegistro) {
        this.listaRegistro = listaRegistro;
    }

    public int getIdRegistro() {
        return idRegistro;
    }

    public void setIdRegistro(int idRegistro) {
        this.idRegistro = idRegistro;
    }
    
  
    
    //-----------Acciones--------------------------------    
    public String procesarAccion() {
        if(accion.equalsIgnoreCase("Nuevo")){
      //      System.out.println("valor de la otra opcion para el id del registro-------------->>>>>>>>>>>>> "+listaRegistro.get(getIdRegistro()-1));
                 horaS=new Date().getTime();
                 p=listaRegistro.get(getIdRegistro()-1).getHoraEntrada().getTime();
            System.out.println("valor de la lista que entra con los registros: "+listaRegistro.get(getIdRegistro()-1).getHoraEntrada().getTime());
                precio=(((horaS-p)*5)/10000);
                System.out.println("valor de la variable h "+horaS);
                System.out.println("valor de la variable p: "+p);
                System.out.println("valor de la variable precio: "+precio);
                 ///////////////////calculo de la tarifa
        cobroBl.register(cost,precio);
        registroBl.modify(listaRegistro.get(getIdRegistro()-1));
        } else if(accion.equalsIgnoreCase("Editar")){
                cobroBl.modify(cost);
            }
        else if(accion.equalsIgnoreCase("Eliminar")){
                cobroBl.delete(cost);
           
}
        accion="";
        return "RegistroVista";
    }

//-----------Listeners--------------------------------  
    public void prepararNuevo(ActionEvent evt){//accionEvent de faces
        cost=new Cobro();
        accion="Nuevo";
    }
    
    public void prepararEditar(ActionEvent evt){
        System.out.println(evt.getComponent().getClientId());
        String arr[]=evt.getComponent().getClientId().split(":");
        String num=arr[3];
        int index=Integer.parseInt(num);
        System.out.println("el numero es: "+index);
        cost=lista.get(index);
        accion="Editar";
    }
    public void prepararEliminar(ActionEvent evt){
        String arr[]=evt.getComponent().getClientId().split(":");
        String num=arr[3];
        int index=Integer.parseInt(num);
        System.out.println("el numero es: "+index);
        cost=lista.get(index);
        accion="Eliminar";
    }
    
    public String procesarSeleccion(){
        cost.setIdRegistro(registroBl.findById(idRegistro));
        return  "CobroConfirmar";
    }
    public long tarifaPrecio(long tarifa){
       
        return precio;
    }
}
